package org.ehe.finance.receipt.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.ehe.common.mybatis.core.domain.BaseEntity2;
import org.ehe.finance.receipt.domain.ErpFinanceReceipt;
import org.ehe.finance.receipt.domain.ErpFinanceReceiptDetail;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 收款单响应VO
 * @author :zhangnn
 * @className :ReceiptResponseVO
 * @description: 收款单响应对象
 * @date 2025-09-02 10:23:16
 */
@Data
@AutoMapper(target = ErpFinanceReceipt.class)
public class ReceiptResponseVO {
    /**
     * 收款单ID
     */
    @Schema(description = "收款单ID")
    private Long id;

    /**
     * 收款单号
     */
    @Schema(description = "收款单号")
    private String receiptNo;

    /**
     * 客户ID
     */
    @Schema(description = "客户ID")
    private Long customerId;

    /**
     * 客户名称
     */
    @Schema(description = "客户名称")
    private String customerName;

    /**
     * 收款日期
     */
    @Schema(description = "收款日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate receiptDate;

    /**
     * 收款账户ID
     */
    @Schema(description = "收款账户ID")
    private Long accountId;

    /**
     * 收款账户名称
     */
    @Schema(description = "收款账户名称")
    private String accountName;

    /**
     * 收款总金额
     */
    @Schema(description = "收款总金额")
    private BigDecimal totalAmount;

    /**
     * 币种ID
     */
    @Schema(description = "币种ID")
    private Long currencyId;

    /**
     * 币种名称
     */
    @Schema(description = "币种名称")
    private String currencyName;

    /**
     * 汇率
     */
    @Schema(description = "汇率")
    private BigDecimal exchangeRate;

    /**
     * 收款类型:1销售收款,2预收款,3其他收款
     */
    @Schema(description = "收款类型:1销售收款,2预收款,3其他收款")
    private Integer receiptType;

    /**
     * 收款类型名称
     */
    @Schema(description = "收款类型名称")
    private String receiptTypeName;

    /**
     * 收款方式:1现金,2银行转账,3票据,4其他
     */
    @Schema(description = "收款方式:1现金,2银行转账,3票据,4其他")
    private Integer paymentMethod;

    /**
     * 收款方式名称
     */
    @Schema(description = "收款方式名称")
    private String paymentMethodName;

    /**
     * 生成凭证ID
     */
    @Schema(description = "生成凭证ID")
    private Long voucherId;

    /**
     * 凭证号
     */
    @Schema(description = "凭证号")
    private String voucherNo;

    /**
     * 部门ID
     */
    @Schema(description = "部门ID")
    private Long departmentId;

    /**
     * 部门名称
     */
    @Schema(description = "部门名称")
    private String departmentName;

    /**
     * 业务员ID
     */
    @Schema(description = "业务员ID")
    private Long salesmanId;

    /**
     * 业务员名称
     */
    @Schema(description = "业务员名称")
    private String salesmanName;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;

    /**
     * 状态:1未审核,2已审核
     */
    @Schema(description = "状态:1未审核,2已审核")
    private Integer status;

    /**
     * 状态名称
     */
    @Schema(description = "状态名称")
    private String statusName;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 创建人名称
     */
    @Schema(description = "创建人名称")
    private String createByName;

    /**
     * 收款明细列表
     */
    @Schema(description = "收款明细列表")
    private List<ErpFinanceReceiptDetail> receiptDetails;
}
